﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Biblioteca.Logica_Negocio.Domain_Model;
using Biblioteca.Acceso_a_Datos.Data_Mappers;

namespace PresentacionBiblioWeb.Controllers
{
    public class EjemplaresController : Controller
    {
        private BibliotecaContext db;
        private RepoGenerico<Ejemplar> repo;
        private RepoGenerico<Material> repomateriales;


        public EjemplaresController() {

            this.db = new BibliotecaContext();
            this.repo = new RepoGenerico<Ejemplar>(this.db);
            this.repomateriales = new RepoGenerico<Material>(this.db);
        }
        
        //
        // GET: /Ejemplares/
        [Authorize(Roles = "Administrador")]
        public ActionResult Index()
        {
            return View(this.repo.Todos());
        }

        //
        // GET: /Ejemplares/Details/5
        [Authorize(Roles = "Administrador")]
        public ActionResult Details(int id = 0)
        {
            Ejemplar ejemplar = this.repo.Buscar(id);
            if (ejemplar == null)
            {
                return HttpNotFound();
            }
            return View(ejemplar);
        }

        //
        // GET: /Ejemplares/Create
        [Authorize(Roles = "Administrador")]
        public ActionResult Create()
        {
            return View();
        }

        //
        // POST: /Ejemplares/Create

        [HttpPost]
        [Authorize(Roles = "Administrador")]
        public ActionResult Create(Ejemplar ejemplar)
        {
            if (ModelState.IsValid)
            {
                this.repo.Agregar(ejemplar);
                return RedirectToAction("Index");
            }

            return View(ejemplar);
        }

        //
        // GET: /Ejemplares/Edit/5
        [Authorize(Roles = "Administrador")]
        public ActionResult Edit(int id = 0)
        {
            Ejemplar ejemplar = this.repo.Buscar(id);
            if (ejemplar == null)
            {
                return HttpNotFound();
            }
            return View(ejemplar);
        }

        //
        // POST: /Ejemplares/Edit/5
        [Authorize(Roles = "Administrador")]
        [HttpPost]
        public ActionResult Edit(Ejemplar ejemplar)
        {
            if (ModelState.IsValid)
            {
                //this.repo.Modificar(ejemplar);
                return RedirectToAction("Index");
            }
            return View(ejemplar);
        }

        //
        // GET: /Ejemplares/Delete/5
        [Authorize(Roles = "Administrador")]
        public ActionResult Delete(int id = 0)
        {
            Ejemplar ejemplar = this.repo.Buscar(id);
            if (ejemplar == null)
            {
                return HttpNotFound();
            }
            return View(ejemplar);
        }

        //
        // POST: /Ejemplares/Delete/5
        [Authorize(Roles = "Administrador")]
        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {
            Ejemplar ejemplar = this.repo.Buscar(id);
            //this.repo.Eliminar(ejemplar);
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            this.repo.Dispose();
            base.Dispose(disposing);
        }
    }
}